package edu.ustb.aur.assetpackage;

import com.baomidou.mybatisplus.extension.service.IService;

import edu.ustb.aur.moldpackage.AbstractMold;

/**
 * @author ShiZhe
 * @create 2021-11-05 10:04
 */
public interface AssetService extends IService<Asset> {

    /**
     * 创建资产 上资产链，获得的交易id视为该资产的地址
     *
     * @param asset
     *            资产对象
     * @return true or false
     */
    boolean createAsset(Asset asset);

    /**
     * 根据assetId获取asset对象 不上链
     *
     * @param assetId
     *            资产id
     * @return asset对象
     */
    Asset findAsset(String assetId);

    /**
     * 根据资产名获取资产地址 不上链
     *
     * @param assetName
     *            资产名
     * @return asset对象
     */
    String findAssetIdByAssetName(String assetName);

    /**
     * 根据资产id查询mold 不上链
     *
     * @param assetId
     *            资产hash地址
     * @return 操作规则
     */
    AbstractMold findMold(String assetId);

    /**
     * 修改资产 在具体合约操作中上链，例如carMold等
     *
     * @param asset
     *            资产对象
     * @return true or false
     */
    boolean updateAsset(Asset asset);

    /**
     * 删除资产 不上链
     *
     * @param assetId
     *            资产链上编号
     * @return true or false
     */
    boolean deleteAsset(String assetId);

    /**
     * 根据资产地址查询资产是否可以访问
     *
     * @param assetId
     *            资产链上编号
     * @return true or false
     */
    boolean findAssetVisitByAssetID(String assetId);

    /**
     * 根据资产地址解锁
     *
     * @param assetId
     *            资产链上编号
     * @return true or false
     */
    boolean updateAssetLockByAssetID(String assetId);
}
